package com.isaiah.map;

import java.util.ArrayList;
import java.util.TreeMap;

/**
 * @Title: ${file_name}
 * @Description: ${todo}
 * @author: Haijun
 * @emial: isaiah@sohu.com
 * @date 2020/5/2610:29
 */
class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        // 1. nums1的频次放入一个map中记录
        TreeMap<Integer, Integer> map = new TreeMap<>();
        for (int num1 : nums1){
            if (map.get(num1) == null){
               map.put(num1, 0);
            }else{
                map.put(num1, map.get(num1) + 1);
            }
        }

        ArrayList<Integer> res = new ArrayList();
        // 2. 遍历num2, 如果在map集合中，则加入返回的结果List中，并把map中的频次减1
        for (int num2 : nums2){
            if (map.get(num2) != null){
                res.add(num2);
                map.put(num2, map.get(num2) - 1);

                // 如果频次减到0，则从map中删除
                if (map.get(num2) == 0){
                    map.remove(num2);
                }
            }
        }
        // 3. 把结果List转换成数组
        return res.stream().mapToInt(Integer::intValue).toArray();
    }
}